JumpServer 堡垒机

您所在的位置:网站首页 jump force教程 JumpServer 堡垒机

JumpServer 堡垒机

2024-07-01 10:53:42| 来源: 网络整理| 查看: 265

JumpServer简介

Jumpserver是一款由python编写, Django开发的开源跳板机/堡垒机系统, 助力互联网企业高效 用户、资产、权限、审计 管理。jumpserver实现了跳板机应有的功能,基于ssh协议来管理,客户端无需安装agent。

Jumpserver是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统。

Jumpserver 使用 Python /Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好。

Jumpserver 采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发访问限制。

JumpServer特点

(1)完全开源,GPL授权

(2)Python编写,容易再次开发

(3)实现了跳板机基本功能,身份认证、访问控制、授权、审计 、批量操作等。

(4)集成了Ansible,批量命令等

(5)支持WebTerminal

(6)Bootstrap编写,界面美观

(7)自动收集硬件信息

(8)录像回放

(9)命令搜索

(10)实时监控

(11)批量上传下载

JumpServer环境说明

安装环境

· 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)

· 操作系统: Linux 发行版 x86_64

· Python环境:Python = 3.6.x

· 数据库:Mysql Server ≥ 5.6 \ Mariadb Server ≥ 5.5.56

· 缓存数据库:Redis

· 代理:Ningx

JumpServer 插件

Jumpserver 管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持 Restful API。

Koko

koko 为 SSH Server 和 Web Terminal Server 。用户可以使用自己的账户通过 SSH 或者 Web Terminal 访问 SSH 协议和 Telnet 协议资产。

Luna

luna 为 Web Terminal Server 前端页面,用户使用 Web Terminal 方式登录时所需要的插件。

Guacamole

Guacamole是一个开源项目,为远程桌面提供解决方案。,Jumpserver 使用其组件实现 RDP和VNC 功能,Jumpserver 并没有修改其代码而是添加了额外的插件,支持 Jumpserver 调用。

JumpServer 组件及其监听端口

代码语言:javascript复制Jumpserver 8080/tcp Redis 6379/tcp MySQL/Mariadb 3306/tcp Nginx 80/tcp Koko SSH 2222/tcp Web Terminal 5000/tcp Guacamole 8081/tcp

JumpServer部署安装

系统配置

系统版本

代码语言:javascript复制[root@JumpServer ~]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core)

系统时间

代码语言:javascript复制date -s "2020-06-16 10:57:00" hwclock -w clock -w

软件版本

selinux

代码语言:javascript复制setenforce 0 sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

firewall

代码语言:javascript复制# nginx端口 firewall-cmd --zone=public --add-port=80/tcp --permanent # 用户SSH登录端口koko firewall-cmd --zone=public --add-port=2222/tcp --permanent # 设置防火墙规则,允许容器ip访问宿主8080端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.17.0.0/16" port protocol="tcp" port="8080" accept" # 设置防火墙规则,允许容器ip访问宿主8080端口 firewall-cmd --reload # 重新载入规则

Python3和Python虚拟环境

安装依赖软件包

代码语言:javascript复制yum -y install wget gcc epel-release git

安装Python3.6

代码语言:javascript复制dnf install python36 python36-devel

建立Python虚拟环境

代码语言:javascript复制#创建虚拟环境,环境命令自定义为py3 cd /opt python3.6 -m venv py3 #运行虚拟化环境 # 看到下面的提示符代表成功, 以后运行 Jumpserver 都要先运行以上 source 命令, 以下所有命令均在该虚拟环境中运行 source /opt/py3/bin/activate # 出现以上字符代表运行成功 (py3) [root@jumpserver py3]

Redis

Jumpserver使用Redis做cache和celery broke

代码语言:javascript复制dnf -y install redis systemctl start redis && systemctl enable redis systemctl status redis

Mariadb数据库

安装Mariadb数据库

代码语言:javascript复制dnf install mariadb-server mariadb -y

启动并开机启动

代码语言:javascript复制systemctl start mariadb && systemctl enable mariadb

初始化数据库

生成随机数据库密码

代码语言:javascript复制[root@JumpServer ~]# DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24` [root@JumpServer ~]# echo -e "\033[31m 你的数据库密码是 $DB_PASSWORD \033[0m" 你的数据库密码是 dhfbGWxvTjZIPDzard39xy7L

数据库配置

代码语言:javascript复制mysql -uroot -p #创建jumpserver数据库 create database jumpserver default charset 'utf8'; #授权jumpserver用户 grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'dhfbGWxvTjZIPDzard39xy7L'; grant all on jumpserver.* to 'jumpserver'@'localhost' identified by 'dhfbGWxvTjZIPDzard39xy7L'; #刷新策略 flush privileges;

Jumpserver 安装

获取 jumpserver 代码

代码语言:javascript复制cd /opt && \ git clone --depth=1 https://github.com/jumpserver/jumpserver.git

网络有问题可以wget下载

代码语言:javascript复制cd /opt wget http://demo.jumpserver.org/download/jumpserver/latest/jumpserver.tar.gz tar xf jumpserver.tar.gz

软件环境依赖

代码语言:javascript复制dnf -y install gcc krb5-devel libtiff-devel libjpeg-devel libzip-devel freetype-devel libwebp-devel tcl-devel tk-devel sshpass openldap-devel mariadb-devel libffi-devel openssh-clients telnet openldap-clients

pip 依赖环境

代码语言:javascript复制cd /opt/jumpserver/requirements/ pip install wheel && \ pip install --upgrade pip setuptools && \ pip install -r requirements.txt

确保已经载入 py3 虚拟环境, 中间如果遇到报错一般是依赖包没装全

国内可以使用阿里镜像加速

代码语言:javascript复制pip install wheel -i https://mirrors.aliyun.com/pypi/simple/ pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/ pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

修改jumpserver配置文件

代码语言:javascript复制cd /opt/jumpserver cp config_example.yml config.yml SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50` # 生成随机SECRET_KEY echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16` # 生成随机BOOTSTRAP_TOKEN echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml sed -i "s/DB_PASSWORD: /DB_PASSWORD: $DB_PASSWORD/g" /opt/jumpserver/config.yml echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m" echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"

启动 jumpserver

确保已经载入 py3 虚拟环境 source /opt/py3/bin/activate

代码语言:javascript复制cd /opt/jumpserver ./jms start all -d 后台运行可以-d 参数

Docker

代码语言:javascript复制# 安装相关依赖 dnf install -y yum-utils device-mapper-persistent-data lvm2 # 配置Docker源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 重新生成缓存 dnf makecache # 安装Docker-ce rpm --import https://mirrors.aliyun.com/docker-ce/linux/centos/gpg dnf -y install docker-ce # 下载相关文件 mkdir -p /etc/docker wget -O /etc/docker/daemon.json http://demo.jumpserver.org/download/docker/daemon.json # 启动docker并设置开机自启 systemctl restart docker && systemctl enable docker

Docker 部署 koko 组件

格式

代码语言:javascript复制docker run --name jms_koko -d \ -p 2222:2222 -p 127.0.0.1:5000:5000 \ -e CORE_HOST=http:// \ -e BOOTSTRAP_TOKEN= \ -e LOG_LEVEL=ERROR \ --restart=always \ jumpserver/jms_koko: 为 jumpserver 的 url 地址, 需要从 jumpserver/config.yml 里面获取, 保证一致, 是版本

例如

代码语言:javascript复制docker run --name jms_koko -d \ -p 2222:2222 \ -p 127.0.0.1:5000:5000 \ -e CORE_HOST=http://172.18.51.227:8080 \ -e BOOTSTRAP_TOKEN=C1JVFTxHvje9fGOK \ -e LOG_LEVEL=ERROR \ --restart=always \ jumpserver/jms_koko:1.5.9

Docker 部署 guacamole 组件

格式

代码语言:javascript复制docker run --name jms_guacamole -d \ -p 127.0.0.1:8081:8080 \ -e JUMPSERVER_SERVER=http:// \ -e BOOTSTRAP_TOKEN= \ -e GUACAMOLE_LOG_LEVEL=ERROR \ jumpserver/jms_guacamole: 为 jumpserver 的 url 地址, 需要从 jumpserver/config.yml 里面获取, 保证一致, 是版本

举例

代码语言:javascript复制docker run --name jms_guacamole -d \ -p 127.0.0.1:8081:8080 \ -e JUMPSERVER_SERVER=http://172.18.51.227:8080 \ -e BOOTSTRAP_TOKEN=C1JVFTxHvje9fGOK \ -e GUACAMOLE_LOG_LEVEL=ERROR \ jumpserver/jms_guacamole:1.5.9

检查容器运行状态

代码语言:javascript复制docker images docker ps -a

查看docker IP地址

代码语言:javascript复制docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称

Web Terminal(前端Luna)

下载安装包

代码语言:javascript复制cd /opt wget https://github.com/jumpserver/luna/releases/download/1.5.9/luna.tar.gz

解压并授权

代码语言:javascript复制tar -xf luna.tar.gz chown -R nginx:nginx luna

安装Nginx

编辑 nginx repo文件

vi /etc/yum.repos.d/nginx.repo

代码语言:javascript复制[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true

安装Nginx

代码语言:javascript复制dnf -y install nginx

Nginx jumpserver 配置文件

代码语言:javascript复制#删除默认default.conf文件 rm -rf /etc/nginx/conf.d/default.conf #编辑 jumpserver 配置文件 vi /etc/nginx/conf.d/jumpserver.conf [root@JumpServer conf.d]# cat jumpserver.conf server { listen 80; client_max_body_size 100m; # 录像及文件上传大小限制 location /luna/ { try_files $uri / /index.html; alias /opt/luna/; # luna 路径, 如果修改安装目录, 此处需要修改 } location /media/ { add_header Content-Encoding gzip; root /opt/jumpserver/data/; # 录像位置, 如果修改安装目录, 此处需要修改 } location /static/ { root /opt/jumpserver/data/; # 静态资源, 如果修改安装目录, 此处需要修改 } location /koko/ { proxy_pass http://localhost:5000; proxy_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log off; } location /guacamole/ { proxy_pass http://localhost:8081/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log off; } location /ws/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8070; proxy_http_version 1.1; proxy_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location / { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

检查Nginx配置文件并启动

代码语言:javascript复制nginx -t systemctl start nginx && systemctl enable nginx systemctl status nginx

访问 JumpServer Web

服务全部启动后, 访问 jumpserver 服务器 nginx 代理的 80 端口, 不要通过8080端口访问 默认账号: admin 密码: admin

JumpServer 主页

会话管理--终端管理 查看koko和guacamole 组件注册是否正常

SSH测试连接

代码语言:javascript复制ssh -p2222 [email protected]

CentOS 8.0 安装docker 报错:Problem: package docker-ce-3:19.03.4-3.el7.x86_64 requires containerd.io >= 1.2.2-3

代码语言:javascript复制package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed - cannot install the best candidate for the job - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded - package containerd.io-1.2.2-3.el7.x86_64 is excluded - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded (try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

更新 containerd.io 的版本,然后重新安装最新版本的docker 即可成功安装

代码语言:javascript复制wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm dnf install -y containerd.io-1.2.6-3.3.el7.x86_64.rpm

检查是否安装成功

代码语言:javascript复制docker -v

docker 操作命令

代码语言:javascript复制#搜索镜像 docker search *image_name* #下载镜像 docker pull *image_name* #查看镜像 docker images #删除镜像 docker rmi *image_name* docker image rm *image_name* #导出docker镜像 docker save *image_name* > /save/image/path/name.tar.gz #导入docker镜像 docker load < /save/image/path/name.tar.gz #查看容器 docker ps docker ps -a docker ps -aq #容器端口映射列表 docker port jms_koko #运行|重启|停止容器 docker start|restart|stop #查看容器 log docker logs -f #删除容器 docker rm *container_id* #显示容器对资源的使用情况(内存、CPU、磁盘等) docker stats jms_koko #显示docker客户端和服务端版本信息 docker version #显示容器中正在运行的进程(相当于容器内执行 ps -ef 命令) docker top jms_koko #显示 Docker 详细的系统信息 docker info #杀死所有正在运行的容器 docker kill $(docker ps -a -q) #删除所有已经停止的容器 docker rm $(docker ps -a -q) #删除所有未打 dangling 标签的镜像 docker rmi $(docker images -q -f dangling=true) #删除所有镜像 docker rmi $(docker images -q) #强制删除镜像名称中包含“doss-api”的镜像 docker rmi --force $(docker images | grep doss-api | awk '{print $3}') #删除所有未使用数据 docker system prune #只删除未使用的volumes docker volume prune

JumpServer官方文档

https://docs.jumpserver.org/zh/master/install/step_by_step/



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭